<?php


namespace Site\ProjetBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Site\ProjetBundle\Entity\Projet;
use Site\GeneralBundle\Entity\Ue;
use Site\UtilisateurBundle\Entity\Utilisateur;
use Site\UtilisateurBundle\Entity\Etudiant;

class AffectationController extends Controller
{

   
    public function affectationManuelleAction($id)
    {
        $em = $this->getDoctrine()->getManager();

        $donneesProjet = $em->getRepository("SiteProjetBundle:Projet")->find($id);

        if (!$donneesProjet)
            throw new \Exception("Projet inexistant.");

        $listEtudiant = $donneesProjet->getEtudiants();
        $nbrRestant = $donneesProjet->getNbMaxEtud() - $donneesProjet->getNbInscritsEtud();

        if ($nbrRestant > 0)
        {
            if ($donneesProjet->getNbInscritsEtud() == 0)
                return $this->render('SiteProjetBundle:Affectation:affectManu.html.twig', array('ajouterEtudiant' => 1, 'afficherFlash' => 1, 'typeFlash' => 'info', 'flash' => 'Aucun etudiant n\'est affecte a ce projet.', 'projet' => $donneesProjet, 'listEtud' => $listEtudiant));
               else
                return $this->render('SiteProjetBundle:Affectation:affectManu.html.twig', array('ajouterEtudiant' => 1, 'afficherFlash' => 0, 'projet' => $donneesProjet, 'listEtud' => $listEtudiant));
        }
        else
            return $this->render('SiteProjetBundle:Affectation:affectManu.html.twig', array('ajouterEtudiant' => 0, 'afficherFlash' => 0, 'projet' => $donneesProjet, 'listEtud' => $listEtudiant));
    }

  
    public function affecterEtudManuAction($id)
    {
        $request = $this->get('request');
        $em = $this->getDoctrine()->getManager();

        $donneesProjet = $em->getRepository("SiteProjetBundle:Projet")->find($id);
        $listEtudiant = $donneesProjet->getEtudiants();
        $nbrRestant = $donneesProjet->getNbMaxEtud() - $donneesProjet->getNbInscritsEtud();

        if ($request->getMethod() != 'POST')
            return $this->render('SiteProjetBundle:Affectation:affectManu.html.twig', array('ajouterEtudiant' => 1, 'afficherFlash' => 1, 'typeFlash' => 'danger', 'flash' => 'Vous n\'avez pas a affecter un etudiant sans penser par le formulaire.', 'projet' => $donneesProjet, 'listEtud' => $listEtudiant));
        else
        {
            if (!$donneesProjet)
                throw new \Exception("Projet innexistant.");

            $etudiant = $em->getRepository("SiteUtilisateurBundle:Etudiant")->findOneByNumEtud($request->get('numEtud'));

            if (!$etudiant)
                return $this->render('SiteProjetBundle:Affectation:affectManu.html.twig', array('ajouterEtudiant' => 1, 'afficherFlash' => 1, 'typeFlash' => 'danger', 'flash' => 'Etudiant inexistant.', 'projet' => $donneesProjet, 'listEtud' => $listEtudiant));

            if ($etudiant->getProjet() != NULL)
                return $this->render('SiteProjetBundle:Affectation:affectManu.html.twig', array('ajouterEtudiant' => 1, 'afficherFlash' => 1, 'typeFlash' => 'danger', 'flash' => 'Etudiant deja affecte.', 'projet' => $donneesProjet, 'listEtud' => $listEtudiant));

            $donneesProjet->addEtudiant($etudiant);
            $donneesProjet->setNbInscritsEtud($donneesProjet->getNbInscritsEtud() + 1);

            $etudiant->setProjet($donneesProjet);

            $em->persist($etudiant);
            $em->persist($donneesProjet);
            $em->flush();

            $nbrRestant = $donneesProjet->getNbMaxEtud() - $donneesProjet->getNbInscritsEtud();

        if ($nbrRestant > 0)
            return $this->render('SiteProjetBundle:Affectation:affectManu.html.twig', array('ajouterEtudiant' => 1, 'afficherFlash' => 1, 'typeFlash' => 'success', 'flash' => 'Etudiant affecte avec succes.', 'projet' => $donneesProjet, 'listEtud' => $listEtudiant));
        else
            return $this->render('SiteProjetBundle:Affectation:affectManu.html.twig', array('ajouterEtudiant' => 0, 'afficherFlash' => 1, 'typeFlash' => 'success', 'flash' => 'Etudiant affecte avec succes.', 'projet' => $donneesProjet, 'listEtud' => $listEtudiant));
        }
    }

 
    public function supprimerAffectationAction($id, $idProjet)
    {
        $em = $this->getDoctrine()->getManager();
        $etudiant = $em->getRepository("SiteUtilisateurBundle:Etudiant")->find($id);
        $projet = $em->getRepository("SiteProjetBundle:Projet")->find($idProjet);
        $listEtudiant = $projet->getEtudiants();

        $nbrRestant = $projet->getNbMaxEtud() - $projet->getNbInscritsEtud();

        if ($projet->getNbInscritsEtud() == 0)
            return $this->render('SiteProjetBundle:Affectation:affectManu.html.twig', array('ajouterEtudiant' => 1, 'afficherFlash' => 1, 'typeFlash' => 'danger', 'flash' => 'Il est impossible de supprimer un etudiant si il n\'y en a pas... Enfin, un peu de logique !', 'projet' => $projet, 'listEtud' => $listEtudiant));

        $projet->removeEtudiant($etudiant);
        $projet->setNbInscritsEtud($projet->getNbInscritsEtud() - 1);
        $etudiant->setProjet(NULL);

        $em->persist($projet);
        $em->persist($etudiant);
        $em->flush();


        $donneesProjet = $projet;
        if ($nbrRestant > 0)
            return $this->render('SiteProjetBundle:Affectation:affectManu.html.twig', array('ajouterEtudiant' => 1, 'afficherFlash' => 1, 'typeFlash' => 'success', 'flash' => 'Etudiant efface du projet avec succes.', 'projet' => $donneesProjet, 'listEtud' => $listEtudiant));
        else
            return $this->render('SiteProjetBundle:Affectation:affectManu.html.twig', array('ajouterEtudiant' => 0, 'afficherFlash' => 1, 'typeFlash' => 'success', 'flash' => 'Etudiant efface du projet avec succes.', 'projet' => $donneesProjet, 'listEtud' => $listEtudiant));


    }
}
